package com.ctvit.cch.ai.pojo.dto;

import jakarta.validation.constraints.NotBlank;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * 创意评估DTO
 *
 * @author heyingcheng
 * @date 2025-07-31
 */
@Getter
@Setter
@ToString
public class CreativeEvaluationDTO {

    public static final String SYSTEM_MESSAGE_TEXT = "你是一名专业的热点内容评估师,擅长根据传播规律和受众反馈,对热点新闻稿,热点短视频进行客观精准的评估.请根据我提供的热点新闻稿或热点短视频的标题和简介,按照以下标准进行评估并给出创作建议,且严格以单行纯JSON格式字符串文本回复,仅包含spread_wide(传播广度评分),influence_depth(影响深度评分),creative_value(创作价值评分),recommendation(创作建议).";

    public static final String USER_MESSAGE_TEMPLATE = """
**标题**:[%s]
**简介**:[%s]
**评估标准**:
1.传播广度评分(总分5分,最低2分):
* 5分:覆盖全球,受众过亿,全平台现象级传播,互动量顶级;若为自然灾害,战争等突发事件,全球主流媒体集中报道,全平台实时刷屏.
* 4.5分:覆盖全国大部分地区,受众数千万,主流平台传播效果显著,互动量高;突发事件中,全国范围广泛关注,主流媒体持续追踪.
* 4分:覆盖多省份/重要城市,受众数百万,主要平台传播度高,互动量可观;突发事件中,多区域重点关注,相关话题热度较高.
* 3.5分:覆盖部分区域/特定平台,受众数十万,特定领域传播效果较好;突发事件中,事发地及周边区域关注度高,特定平台讨论热烈.
* 3分:本地或小圈子传播,受众数万,传播力度中等,少量互动;突发事件中,主要在事发地本地传播,讨论范围有限.
* 2分:少数小平台/小群体传播,受众数千,互动较少;突发事件中,仅在与事件关联度低的小范围群体中传播.
2.影响深度评分(总分5分,最低2分):
* 5分:受众态度根本转变,认知颠覆性改变,推动社会观念与行为变革,影响深远;自然灾害,战争等突发事件中,引发全球范围内的认知革新和行动响应,改变人们对安全,生存等的认知.
* 4.5分:多数受众态度显著转变,认知重大调整,引发大范围深度讨论,影响行为明显;突发事件中,促使多数人对事件产生深刻认知,引发广泛行动支持或反思.
* 4分:多数受众态度明显变化,认知更深入,引发热烈讨论,引导部分人行为;突发事件中,使多数人对事件的严重性,影响等认知加深,部分人采取相关行动.
* 3.5分:部分受众态度有转变,认知加深,小范围深度讨论,轻微影响少数人行为;突发事件中,部分人对事件有更清晰认知,小范围展开讨论,少数人采取行动.
* 3分:少数受众态度轻微转变,认知略有提升,零散讨论,影响不明显;突发事件中,少数人对事件认知有提升,讨论零散,无明显行动影响.
* 2分:极少数受众态度微弱变化,认知表面,讨论少且浅,几乎无影响;突发事件中,极少数人对事件有表面认知,讨论极少.
3.创作价值评分(总分5分,最低2分):
* 5分:传播广度和影响深度均5分,兼具广泛传播与深刻影响,是同类标杆;涉及突发事件时,能精准传递关键信息,引发全球共鸣与正确行动.
* 4.5分:传播广度4.5-5分且影响深度4.5-5分,或其一5分另一4分,创作价值极高;涉及突发事件时,传播广泛且影响深刻,对公众认知和行动有积极引导.
* 4分:传播广度4-4.5分且影响深度 4-4.5分,或整体协调,创作价值高;涉及突发事件时,传播和影响效果良好,能有效传递信息.
* 3.5分:传播广度3.5-4分且影响深度3.5-4分,中等偏上,有一定创作价值;涉及突发事件时,在特定范围有效传播,对部分人认知有积极影响.
* 3分:传播广度3-3.5分且影响深度3-3.5分,中等水平,具备基本创作价值;涉及突发事件时,能基本传递信息,有一定认知影响.
* 2分:传播广度2-3分且影响深度2-3分,效果平淡,创作价值一般;涉及突发事件时,传播和影响有限,信息传递效果一般.
""";

    /**
     * 标题
     */
    @NotBlank(message = "标题不能为空")
    private String title;

    /**
     * 简介
     */
    private String summary;

    public CreativeEvaluationDTO() {
    }

    public CreativeEvaluationDTO(String title, String summary) {
        this.title = title;
        this.summary = summary;
    }

}
